# coding: utf-8
# 全ての要素にアクセスする

from xml.dom import minidom

# 全ての要素のタグ名もしくはテキストを表示する
def printAllElement(node, hierarchy=0):
    # スペース調整
    space = ''
    for i in range(hierarchy*4):
        space += ' '
    
    # エレメントノードの場合はタグ名を表示する
    if node.nodeType == node.ELEMENT_NODE:
        print("{0}{1}".format(space, node.tagName))
        # 再帰呼び出し
        for child in node.childNodes:
            printAllElement(child, hierarchy+1)
    # テキストもしくはコメントだった場合dataを表示する
    elif node.nodeType in [node.TEXT_NODE, node.COMMENT_NODE]:
        # スペースを取り除く
        data = node.data.replace(' ', '')
        # 改行のみではなかった時のみ表示する
        if data!='\n': print("{0}{1}".format(space, node.data))
        
    

# sample.xmlファイルを読み込む
xdoc = minidom.parse("sample.xml")

# 全ての要素を表示
printAllElement(xdoc.documentElement)


"""    実行結果
recipe
    dish
        基本的なパン
    material
        小麦粉
    material
        イースト
    material
        水
    material
        食塩
    point
        process
            全ての材料を一緒にして混ぜます。
        process
            十分にこねます。
        process
            布で覆い、暖かい部屋で1時間そのままにしておきます。
        process
            もう一度こねます。
        process
            パン焼きの容器に入れます。
        process
            布で覆い、暖かい部屋で1時間そのままにしておきます。
        process
            オーブンに入れて温度を180℃にして30分間焼きます。

"""